package com.df.bpm.utils.businessViewer;

import javax.swing.*;
import javax.swing.table.TableColumn;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.lang.reflect.Field;

public class Main {
    /**
     * 服务地址
     * <P>例如：http://localhost:9902/businessOverview/</P>
     */
//    public static String server="http://localhost:9902/";
    public static String server="http://192.168.0.11:8081/api/businessOverview/";
    public static MainPanel mainPanel=new MainPanel();
    public static void main(String[] args) {
        JFrame jf=new JFrame();
        jf.setLocationRelativeTo(null);
        jf.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                // 关闭窗口时触发
            }
        });
        jf.setLayout(null);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jf.add(mainPanel);
//        mainPanel.setBackground(Color.YELLOW);
        jf.addComponentListener(new ComponentAdapter() {// 监听JFrame的大小变化事件
            @Override
            public void componentResized(ComponentEvent e) {
                // 当JFrame大小改变时，调整JPanel的大小以匹配
                mainPanel.setSize(jf.getSize());
                // 注意：在某些情况下，你可能还需要调用panel.revalidate()和panel.repaint()，
                // 但在这个简单的例子中，由于JPanel是直接填充JFrame的，所以不需要。
            }
        });

        jf.setSize(400, 400);
        jf.setExtendedState(JFrame.MAXIMIZED_BOTH);
        jf.setVisible(true);
    }

    /**
     * 隐藏列
     * @param inTab 目标table
     * @param hideIndex 目标列id
     */
    public static void hideCol(JTable inTab, int hideIndex) {
        TableColumn idColumn= inTab.getColumnModel().getColumn(hideIndex);
        idColumn.setWidth(0);
        idColumn.setMaxWidth(0);
        idColumn.setMinWidth(0);
        inTab.getTableHeader().getColumnModel().getColumn(hideIndex).setMaxWidth(0); //设置表的标题的宽度也为0,这个很重要
        inTab.getTableHeader().getColumnModel().getColumn(hideIndex).setMinWidth(0);
    }

    public static String printNonNullFields(Object obj) {

        String result= "";
        // 获取对象的类
        Class<?> clazz = obj.getClass();

        // 获取类的所有字段（包括私有字段）
        Field[] fields = clazz.getDeclaredFields();

        // 遍历字段
        for (Field field : fields) {
            // 设置字段为可访问（即使是私有字段）
            field.setAccessible(true);

            try {
                // 获取字段的值
                Object value = field.get(obj);

                // 检查值是否为空（这里简单地使用null检查，你可以根据需要添加更复杂的检查）
                if (value != null) {
                    // 输出字段名和字段值
//                    System.out.println(field.getName() + " = " + value);
                    if(result.isEmpty()){
                        result = field.getName() + "=" + value;
                    }else{
                        result=result+"&"+field.getName() + "=" + value;
                    }
                }
            } catch (IllegalAccessException e) {
                // 处理访问异常（通常不会发生，因为我们已经设置了setAccessible(true)）
                e.printStackTrace();
            }
        }

        return result;
    }
}
